home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / BORL_TIP / TI2000 / TI2720.ASC < prev   
Text File  |  1994-10-03  |  2KB  |  94 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.   PRODUCT  :  Pascal                                 NUMBER  :  2720
  8.   VERSION  :  All
  9.        OS  :  DOS
  10.      DATE  :  September 30, 1994                       PAGE  :  1/2
  11.  
  12.     TITLE  :  Using FindFirst and FindNext to find directories.
  13.  
  14.  
  15.  
  16.  
  17. {
  18.   Finding directories using Pascal's FindFirst() and
  19.   FindNext() procedure can be a bit tricky.  By default,
  20.   FindFirst() and FindNext() will find ALL files.  Not
  21.   just directories.  To determine if what FindFirst()
  22.   and FindNext() finds is really a directory, you must
  23.   check the Attr field of the SearchRec to determine
  24.   if the attribute indicates that the element is a
  25.   directory.
  26.  
  27.   The following program adds only directory names to an
  28.   array of strings.
  29. }
  30.  
  31. program FindIt;
  32.  
  33. uses DOS;
  34.  
  35. const
  36.   ArrayLimit = 512;
  37.  
  38. type
  39.   DOSFileName = String[12];
  40.  
  41. var
  42.   SR: SearchRec;
  43.   A: array[1..ArrayLimit] of DOSFileName;
  44.   i: integer;
  45.  
  46. begin
  47.   i := 1;
  48.   { find the first directory }
  49.   FindFirst('c:\*.*', Directory, SR);
  50.   { check for an error }
  51.   If DosError = 0 then begin
  52.     repeat
  53.       { is it really a directory? }
  54.       if (SR.Attr and Directory) <> 0 then begin
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.   PRODUCT  :  Pascal                                 NUMBER  :  2720
  68.   VERSION  :  All
  69.        OS  :  DOS
  70.      DATE  :  September 30, 1994                       PAGE  :  2/2
  71.  
  72.     TITLE  :  Using FindFirst and FindNext to find directories.
  73.  
  74.  
  75.  
  76.  
  77.         A[i] := SR.Name;  { add dir to array }
  78.         i := i + 1;       { increment index }
  79.       end;
  80.       FindNext(SR);       { find next directory }
  81.     { exit loop if a DOS error occurs }
  82.     until DosError <> 0;
  83.   end
  84.   else
  85.     { Write error if FindFirst() fails }
  86.     Writeln('Can''t do it.  Error code: ', DOSError);
  87. end.
  88.  
  89.  
  90. DISCLAIMER: You have the right to use this technical information
  91. subject to the terms of the No-Nonsense License Statement that
  92. you received with the Borland product to which this information
  93. pertains.
  94.